<?php
/* vim: set expandtab tabstop=4 shiftwidth=4: */
// +----------------------------------------------------------------------+
// | PHP version 4.0													  |
// +----------------------------------------------------------------------+
// | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group			 |
// +----------------------------------------------------------------------+
// | This source file is subject to version 2.0 of the PHP license,	   |
// | that is bundled with this package in the file LICENSE, and is		|
// | available at through the world-wide-web at						   |
// | http://www.php.net/license/2_02.txt.								 |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to		  |
// | license@php.net so we can mail you a copy immediately.			   |
// +----------------------------------------------------------------------+
// | Authors: Adam Daniel <adaniel1@eesus.jnj.com>						|
// |		  Bertrand Mansion <bmansion@mamasam.com>					 |
// +----------------------------------------------------------------------+
//
// $Id: textarea.php,v 1.1 2006/09/24 17:04:55 jamiesensei Exp $

require_once("HTML/QuickForm/element.php");

/**
 * HTML class for a textarea type field
 * 
 * @author	   Adam Daniel <adaniel1@eesus.jnj.com>
 * @author	   Bertrand Mansion <bmansion@mamasam.com>
 * @version	  1.0
 * @since		PHP4.04pl1
 * @access	   public
 */
class HTML_QuickForm_textarea extends HTML_QuickForm_element
{
	// {{{ properties

	/**
	 * Field value
	 * @var	   string
	 * @since	 1.0
	 * @access	private
	 */
	var $_value = null;

	// }}}
	// {{{ constructor
		
	/**
	 * Class constructor
	 * 
	 * @param	 string	Input field name attribute
	 * @param	 mixed	 Label(s) for a field
	 * @param	 mixed	 Either a typical HTML attribute string or an associative array
	 * @since	 1.0
	 * @access	public
	 * @return	void
	 */
	function HTML_QuickForm_textarea($elementName=null, $elementLabel=null, $attributes=null)
	{
		HTML_QuickForm_element::HTML_QuickForm_element($elementName, $elementLabel, $attributes);
		$this->_persistantFreeze = true;
		$this->_type = 'textarea';
	} //end constructor
	
	// }}}
	// {{{ setName()

	/**
	 * Sets the input field name
	 * 
	 * @param	 string	$name   Input field name attribute
	 * @since	 1.0
	 * @access	public
	 * @return	void
	 */
	function setName($name)
	{
		$this->updateAttributes(array('name'=>$name));
	} //end func setName
	
	// }}}
	// {{{ getName()

	/**
	 * Returns the element name
	 * 
	 * @since	 1.0
	 * @access	public
	 * @return	string
	 */
	function getName()
	{
		return $this->getAttribute('name');
	} //end func getName

	// }}}
	// {{{ setValue()

	/**
	 * Sets value for textarea element
	 * 
	 * @param	 string	$value  Value for textarea element
	 * @since	 1.0
	 * @access	public
	 * @return	void
	 */
	function setValue($value)
	{
		$this->_value = $value;
	} //end func setValue
	
	// }}}
	// {{{ getValue()

	/**
	 * Returns the value of the form element
	 *
	 * @since	 1.0
	 * @access	public
	 * @return	string
	 */
	function getValue()
	{
		return $this->_value;
	} // end func getValue

	// }}}
	// {{{ setWrap()

	/**
	 * Sets wrap type for textarea element
	 * 
	 * @param	 string	$wrap  Wrap type
	 * @since	 1.0
	 * @access	public
	 * @return	void
	 */
	function setWrap($wrap)
	{
		$this->updateAttributes(array('wrap' => $wrap));
	} //end func setWrap
	
	// }}}
	// {{{ setRows()

	/**
	 * Sets height in rows for textarea element
	 * 
	 * @param	 string	$rows  Height expressed in rows
	 * @since	 1.0
	 * @access	public
	 * @return	void
	 */
	function setRows($rows)
	{
		$this->updateAttributes(array('rows' => $rows));
	} //end func setRows

	// }}}
	// {{{ setCols()

	/**
	 * Sets width in cols for textarea element
	 * 
	 * @param	 string	$cols  Width expressed in cols
	 * @since	 1.0
	 * @access	public
	 * @return	void
	 */ 
	function setCols($cols)
	{
		$this->updateAttributes(array('cols' => $cols));
	} //end func setCols

	// }}}
	// {{{ toHtml()

	/**
	 * Returns the textarea element in HTML
	 * 
	 * @since	 1.0
	 * @access	public
	 * @return	string
	 */
	function toHtml()
	{
		if ($this->_flagFrozen) {
			return $this->getFrozenHtml();
		} else {
			return $this->_getTabs() .
				   '<textarea' . $this->_getAttrString($this->_attributes) . '>' .
				   // because we wrap the form later we don't want the text indented
				   preg_replace("/(\r\n|\n|\r)/", '&#010;', htmlspecialchars($this->_value)) .
				   '</textarea>';
		}
	} //end func toHtml
	
	// }}}
	// {{{ getFrozenHtml()

	/**
	 * Returns the value of field without HTML tags (in this case, value is changed to a mask)
	 * 
	 * @since	 1.0
	 * @access	public
	 * @return	string
	 */
	function getFrozenHtml()
	{
		$value = htmlspecialchars($this->getValue());
		if ($this->getAttribute('wrap') == 'off') {
			$html = $this->_getTabs() . '<pre>' . $value."</pre>\n";
		} else {
			$html = nl2br($value)."\n";
		}
		return $html . $this->_getPersistantData();
	} //end func getFrozenHtml

	// }}}

} //end class HTML_QuickForm_textarea
?>
